﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;

using System.Data;
using System.Data.Objects;

namespace Sispe.Repository
{
    public class TrabajadorRepository:MasterRepository, ITrabajadorRepository
    {

        public List<TRABAJADOR> GetAllFromTrabajador()
        {
            var query = from c in context.TRABAJADORs
                            .Include("PERSONA")
                            .Include("REGIMEN_PENSIONARIO")
                            //.Include("SOCIO")
                        select c;
            //ObjectContext.Refresh(RefreshMode.StoreWins, query);
            return query.ToList();
        }
        
        //BUSQUEDAS DETALLADAS DEL TRABAJADOR POR MEDIO DE PERSONA.....

        //busquedas unitarias.......
        public List<TRABAJADOR> GetAllFromPersonaByDni(string dni)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (dni != null && dni != string.Empty && dni != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByApellidos(string apellidos)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (apellidos != null && apellidos != string.Empty && apellidos != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) ||
                                  p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombres(string nombres)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (nombres != null && nombres != string.Empty && nombres != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Nombres.ToUpper().Contains(nombres)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaBySexo(string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (sexo != null && sexo != string.Empty && sexo != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByEstadoCivil(string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (estCivil != null && estCivil != string.Empty && estCivil != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniAndNombres(string dni, string nombres)
        {

            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.ToUpper().Contains(nombres)
                        select p;
            
            return query.ToList();
            
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniAndApellidos(string dni, string apellidos)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos))
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniAndSexo(string dni, string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniAndEstadoCovil(string dni, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombreAndApellidos(string nombres, string apellidos)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos))
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombreAndSexo(string nombres, string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Nombres.Contains(nombres) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombreAndEstadoCivil(string nombres, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Nombres.Contains(nombres) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByApellidosAndSexo(string apellidos, string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where (p.PERSONA.ApePaterno.Contains(apellidos)||p.PERSONA.ApeMaterno.Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByApellidosAndEstadoCivil(string apellidos, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where (p.PERSONA.ApePaterno.Contains(apellidos) || p.PERSONA.ApeMaterno.Contains(apellidos)) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaBySexoAndEstadoCivil(string sexo, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.SEXO.Descripcion.Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresAndApellidos(string dni, string nombres, string apellidos)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos))
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresAndSexo(string dni, string nombres, string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.ToUpper().Contains(nombres) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresAndEstadoCivil(string dni, string nombres, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.ToUpper().Contains(nombres) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombresApellidosAndSexo(string nombres, string apellidos, string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombresApellidosAndEstadoCivil(string nombres, string apellidos, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByApellidosSexoAndDni(string apellidos, string sexo, string dni)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo)&&p.PERSONA.Dni.ToUpper().Contains(dni)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByApellidosSexoAndEstadoCivil(string apellidos, string sexo, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.Contains(estCivil)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaBySexoEstadoCivilAndDni(string sexo, string estCivil, string dni)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil) && p.PERSONA.Dni.ToUpper().Contains(dni)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaBySexoEstadoCivilAndNombre(string sexo, string estCivil, string nombres)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.ToUpper().Contains(estCivil) && p.PERSONA.Nombres.ToUpper().Contains(nombres)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresApellidosAndSexo(string dni, string nombres, string apellidos, string sexo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.Contains(sexo)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresApellidosAndEstadoCivil(string dni, string nombres, string apellidos, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.ESTADO_CIVIL.Descripcion.Contains(estCivil)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresSexoAndEstadoCivil(string dni, string nombres, string sexo, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.Contains(nombres) && p.PERSONA.SEXO.Descripcion.ToUpper().Contains(sexo) && p.PERSONA.SEXO.Descripcion.Contains(sexo)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByNombresApellidosSexoAndEstadoCivil(string nombres, string apellidos, string sexo, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where  p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos))&&p.PERSONA.SEXO.Descripcion.Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.Contains(estCivil)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByApellidosSexoEstadoCivilAndDni(string apellidos, string sexo, string estCivil, string dni)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.Contains(estCivil) && p.PERSONA.Dni.Contains(dni)
                        select p;

            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromPersonaByDniNombresApellidosSexoAndEstadCivil(string dni, string nombres, string apellidos, string sexo, string estCivil)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.PERSONA.Dni.Contains(dni) && p.PERSONA.Nombres.Contains(nombres) && (p.PERSONA.ApePaterno.ToUpper().Contains(apellidos) || p.PERSONA.ApeMaterno.ToUpper().Contains(apellidos)) && p.PERSONA.SEXO.Descripcion.Contains(sexo) && p.PERSONA.ESTADO_CIVIL.Descripcion.Contains(estCivil)
                        select p;

            return query.ToList();
        }

        //BUSQUEDAS DE TRABAJADOR POR MEDIO DE UN TRABAJADOR

        //busuqedas unitarias.....
        public List<TRABAJADOR> GetAllFromTrabajadorByNEdad(string nEdad)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (nEdad != null && nEdad != string.Empty && nEdad != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByRPensionario(string rPensionario)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (rPensionario != null && rPensionario != string.Empty && rPensionario != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.REGIMEN_PENSIONARIO.Descripcion.Contains(rPensionario)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorBySocio(string socio)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (socio != null && socio != string.Empty && socio != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByUbigeo(string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (ubigeo != null && ubigeo != string.Empty && ubigeo != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByRecomendable(string recomendable)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (recomendable != null && recomendable != string.Empty && recomendable != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Recomendable.Equals(recomendable)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorBySindicato(string sindicato)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        select p;
            if (sindicato != null && sindicato != string.Empty && sindicato != "")
            {
                query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Sindicato.Equals(sindicato)
                        select p;
            }
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadAndRPensionario(string nEdad, string rPensionario)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) && p.REGIMEN_PENSIONARIO.Descripcion.ToUpper().Contains(rPensionario)
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadAndSocio(string nEdad, string socio)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) && (p.SOCIO.RazonSocial.ToUpper().Contains(socio)||p.SOCIO.Ruc.Contains(socio))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadAndUbigeo(string nEdad, string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) && (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByRPensionarioAndSocio(string rPensionario, string socio)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.REGIMEN_PENSIONARIO.Descripcion.Contains(rPensionario) && (p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByRPensionarioAndUbigeo(string rPensionario, string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.REGIMEN_PENSIONARIO.Descripcion.Contains(rPensionario) && (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorBySocioAndUbigeo(string socio, string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where (p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio)) && (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo))
                        select p;
            return query.ToList();
        }

        //busquedas triples....
        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadRPensionarioAndSocio(string nEdad, string rPensionariom, string socio)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) && p.REGIMEN_PENSIONARIO.Descripcion.ToUpper().Contains(rPensionariom) &&
                                   (p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadRPensionarioAndUbigeo(string nEdad, string rPensionariom, string ubiego)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) && p.REGIMEN_PENSIONARIO.Descripcion.ToUpper().Contains(rPensionariom) &&
                                   (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubiego) || p.UBIGEO.Codigo.Contains(ubiego))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadSocioAndUbigeo(string nEdad, string socio, string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) &&
                                   (p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio)) &&
                                   (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo))
                        select p;
            return query.ToList();
        }

        public List<TRABAJADOR> GetAllFromTrabajadorByRPensionarioSocioAndUbigeo(string rPensionario, string socio, string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.REGIMEN_PENSIONARIO.Descripcion.ToUpper().Contains(rPensionario) &&
                                   (p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio)) &&
                                   (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo))
                        select p;
            return query.ToList();
        }

        //busqueda completa......
        public List<TRABAJADOR> GetAllFromTrabajadorByNEdadRPensionarioSocioAndUbigeo(string nEdad, string rPensionariom, string socio, string ubigeo)
        {
            var query = from p in context.TRABAJADORs.Include("PERSONA").Include("REGIMEN_PENSIONARIO").Include("SOCIO")
                        where p.Edad.Equals(nEdad) && p.REGIMEN_PENSIONARIO.Descripcion.ToUpper().Contains(rPensionariom) &&
                                   (p.SOCIO.RazonSocial.ToUpper().Contains(socio) || p.SOCIO.Ruc.Contains(socio)) &&
                                   (p.UBIGEO.UbigeoCompleto.ToUpper().Contains(ubigeo) || p.UBIGEO.Codigo.Contains(ubigeo))
                        select p;
            return query.ToList();
        }


        public void AddTrabajador(TRABAJADOR trabajador)
        {
            context.TRABAJADORs.Add(trabajador);
            context.SaveChanges();
        }

        public void UpdateTrabajador(TRABAJADOR trabajador)
        {
            context.Entry(trabajador).State = System.Data.EntityState.Modified;
            context.SaveChanges();
        }

        public TRABAJADOR GetFromTrabajadorById(int id)
        {
            var query = from tt in context.TRABAJADORs
                        where tt.Id.Equals(id)
                        select tt;
            return query.SingleOrDefault();

            //var query = from tt in context.TRABAJADORs.Include("PERSONA").Include("BANCO").Include("ESTUDIO").Include("REFERENCIA").Include("REGIMEN_PENSIONARIO")
            //            .Include("RURAL").Include("SOCIO").Include("UBICACION_TRABAJADOR").Include("UBIGEO")
            //            where tt.Id.Equals(id)
            //            select tt;
            //return query.SingleOrDefault();
        }



        public TRABAJADOR DownloadCurriculum(int id)
        {
            var query = from tt in context.TRABAJADORs.Include("CURRICULO")
                        where tt.Id.Equals(id)
                        select tt;
            return query.SingleOrDefault();
        }
    }
}
